#include "Json.hpp"
#include <fstream>
#include <string.h>
#include <iostream>


#define JSONTEXT_NULL "null"
#define JSONTEXT_TRUE "true"
#define JSONTEXT_FALSE "false"

#define READFILE_BUFFSIZE 0xffff

namespace ym
{
    class Parser
    {
    private:
        char jsonText[READFILE_BUFFSIZE];
        char *currentChar;
        char *jsonEnd;
        bool nextElement;
    public:
        __declspec(dllexport)Parser();
        __declspec(dllexport)~Parser();
        __declspec(dllexport)Json* nextJson();
        __declspec(dllexport)bool findNextChar(const char ch);
        __declspec(dllexport)Json* load(const char *str);
        __declspec(dllexport)Json* loadFromFile(const char *filename);
        __declspec(dllexport)void skipWhiteSpace();
        __declspec(dllexport)bool isEnd();
        __declspec(dllexport)Json* parseNull();
        __declspec(dllexport)Json* parseBool();
        __declspec(dllexport)Json* parseNumber();
        __declspec(dllexport)Json* parseString();
        __declspec(dllexport)Json* parseArray();
        __declspec(dllexport)Json* parseObject();
    };
}